﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using SRD.Model.SRD.DTO;
using SRD.Model.SRD.Util;
using System.Data.SqlClient;
using System.Data;
using System.Collections;
using System.Web.UI.WebControls;
using System.Configuration;


namespace SRD.Model.SRD.DAO
{
 public class ProfissionalDAO
    {
        DataClassesSRDDataContext bancoDados = new DataClassesSRDDataContext();
     
        // METODO PARA BUSCA PROFSSIONAL POR PARTE DO NOME         
        public IQueryable findByName(string nomeProfissional, Int32 empresaId)
        {
            var resultado = from p in bancoDados.PROFISSIONALs
                            where p.NM_PROFISSIONAL.Contains(nomeProfissional) && p.EMPRESA_ID == empresaId
                            select new
                            {
                                p.PROFISSIONAL_ID,
                                p.CARGO.CARGO_ID,
                                p.SETOR.SETOR_ID
                            };
            return resultado;

        }

        public PROFISSIONAL findByLogin(string loginProfissional)
        {
            PROFISSIONAL resultado = (from p in bancoDados.PROFISSIONALs
                            where p.LOGIN.Equals(loginProfissional)
                            select p).First();
            return resultado;

        }

        public IQueryable findLiderByEmpresaId(Int32 empresaId)
        {
            var resultado = from p in bancoDados.PROFISSIONALs
                            where (p.EMPRESA_ID == empresaId && p.RESPONSAVEL.Equals('S'))  
                            select p;
            return resultado;

        }

        public PROFISSIONAL findByID(PROFISSIONAL profissional)
        {
            var resultado = (from p in bancoDados.PROFISSIONALs
                             where p.PROFISSIONAL_ID == profissional.PROFISSIONAL_ID
                             select p).First();

            return resultado;
        }

        public IQueryable findProfissionalCargoSetor(Int32 empresaId)
        {
            var resultado = from p in bancoDados.PROFISSIONALs
                            where p.EMPRESA_ID == empresaId
                            select new
                            {
                                p.PROFISSIONAL_ID,
                                p.NM_PROFISSIONAL,
                                p.CARGO.NM_CARGO,
                                p.SETOR.NM_SETOR
                            };

            return resultado;
        }

        public IQueryable findAll()
        {
            var resultado = from p in bancoDados.PROFISSIONALs
                            select p;

            return resultado;
        }

        public string insert(PROFISSIONAL profissional)
        {
            try
            {
                bancoDados.PROFISSIONALs.InsertOnSubmit(profissional);
                bancoDados.SubmitChanges();
                return "Inclusão realizada com sucesso!";
            }
            catch (Exception o)
            {
                return "Houve erro na inclusão: " + o.Message;
            }
        }

        public string update(PROFISSIONAL profissional)
        {
            try
            {
                var profissionalExistente = (from p in bancoDados.PROFISSIONALs
                                        where p.PROFISSIONAL_ID == profissional.PROFISSIONAL_ID
                                        select p).First();
                profissionalExistente.NM_PROFISSIONAL = profissional.NM_PROFISSIONAL;
                profissionalExistente.CPF = profissional.CPF;
                profissionalExistente.RG = profissional.RG;
                profissionalExistente.EMAIL = profissional.EMAIL;
                profissionalExistente.LOGIN = profissional.LOGIN;
                profissionalExistente.SENHA = profissional.SENHA;
                profissionalExistente.EMPRESA_ID = profissional.EMPRESA_ID;
                profissionalExistente.CARGO_ID = profissional.CARGO_ID;
                profissionalExistente.SETOR_ID = profissional.SETOR_ID;
                profissionalExistente.LIDER_ID = profissional.LIDER_ID;
                profissionalExistente.ATIVO = profissional.ATIVO;
                profissionalExistente.RESPONSAVEL = profissional.RESPONSAVEL;
                bancoDados.SubmitChanges();
                return "Atualização realizada com sucesso!";
            }
            catch (Exception o)
            {
                return "Houve erro na atualização: " + o.Message;
            }
        }

        public string delete(PROFISSIONAL profissional)
        {
            try
            {
                var profissionalExitente = (from p in bancoDados.PROFISSIONALs
                                       where p.PROFISSIONAL_ID == profissional.PROFISSIONAL_ID
                                       select p).First();
                PROFISSIONAL pro = profissionalExitente;
                bancoDados.PROFISSIONALs.DeleteOnSubmit(pro);
                bancoDados.SubmitChanges();
                return "Registro excluído com sucesso!";
            }
            catch (Exception o)
            {
                return "Houve erro ao excluir: " + o.Message;
            }
        }

    }
}
